package org.lazygamerz.Lexer;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

/**
 * JavaLexer is a java lexer.  Created with JFlex.  An example of how it is used:
 *  <CODE>
 *  <PRE>
 *  JavaLexer shredder = new JavaLexer(System.in);
 *  JavaToken t;
 *  while ((t = shredder.getNextToken()) != null){
 *      System.out.println(t);
 *  }
 *  </PRE>
 *  </CODE>
 * The tokens returned should comply with the
 * <A Href=http://java.sun.com/docs/books/jls/html/>Java
 * Language Specification</A>.
 * @see JavaToken
 */

/**
 * This class is a scanner generated by <a href="http://www.jflex.de/">JFlex</a>
 * 1.3.5 on 12/12/03 6:44 AM from the specification file
 * <tt>file:/home/steveo/projects/java/com/Ostermiller/Syntax/Lexer/JavaLexer.lex</tt>
 */
public class JavaLexer implements Lexer {

	/** This character denotes the end of file */
	final public static int YYEOF = -1;

	/** initial size of the lookahead buffer */
	final private static int YY_BUFFERSIZE = 16384;

	/** lexical states */
	final public static int YYINITIAL = 0;

	/**
	 * Translates characters to character classes
	 */
	final private static char[] yycmap = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 0,
		7, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 44,
		18, 0, 6, 10, 48, 17, 33, 34, 20, 21, 40, 22, 32, 19, 4, 5, 5, 5,
		3, 3, 3, 3, 2, 2, 47, 39, 43, 41, 42, 46, 0, 1, 1, 1, 31, 28, 29,
		6, 6, 6, 6, 6, 24, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 26, 6, 6, 37,
		8, 38, 50, 6, 0, 51, 14, 53, 30, 27, 15, 59, 57, 58, 6, 55, 23, 60,
		13, 54, 61, 6, 12, 52, 16, 11, 62, 63, 25, 56, 64, 35, 49, 36, 45,
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };

	/**
	 * Translates a state to a row index in the transition table
	 */
	final private static int yy_rowMap[] = { 0, 65, 130, 195, 260, 325, 390,
		455, 520, 585, 650, 715, 780, 845, 910, 975, 1040, 1105, 1170,
		1235, 1300, 1365, 1430, 1495, 1495, 1495, 1495, 1495, 1495, 1495,
		1495, 1560, 1625, 1690, 1755, 1495, 1495, 1495, 1820, 1885, 1950,
		2015, 2080, 2145, 2210, 2275, 2340, 2405, 2470, 2535, 2535, 2535,
		2600, 2535, 2665, 2730, 2795, 2860, 2535, 2925, 2990, 2535, 3055,
		3120, 1495, 3185, 3250, 3315, 3380, 3445, 3510, 3575, 3640, 3705,
		3770, 3835, 3900, 3965, 4030, 4095, 1495, 4160, 1495, 4225, 4290,
		1495, 1495, 1495, 1495, 1495, 1495, 4355, 4420, 4485, 4550, 4615,
		4680, 4745, 1495, 1495, 4810, 1495, 4875, 1495, 1495, 1495, 1495,
		1495, 1495, 4940, 5005, 5070, 5135, 5200, 5265, 5330, 5395, 5460,
		5525, 5590, 130, 5655, 5720, 5785, 5850, 5915, 5980, 6045, 6110,
		6175, 2535, 6240, 6305, 6370, 6435, 6500, 6565, 130, 6630, 6695,
		6760, 6825, 6890, 6955, 130, 7020, 7085, 7150, 130, 7215, 7280,
		7345, 7410, 1495, 7475, 7540, 7605, 7670, 7735, 7800, 7865, 7930,
		7995, 8060, 8125, 8190, 8255, 1495, 8320, 1495, 1495, 8385, 1495,
		1495, 8450, 1495, 8515, 8580, 8645, 8710, 8775, 8840, 8905, 8970,
		9035, 9100, 9165, 9230, 9295, 9360, 9425, 9490, 9555, 9620, 9685,
		9750, 9815, 9880, 9945, 10010, 2535, 10075, 10140, 10205, 130,
		10270, 10335, 10400, 130, 10465, 10530, 130, 10595, 10660, 130,
		10725, 1495, 10790, 10855, 10920, 10985, 1495, 130, 130, 11050,
		11115, 11180, 1495, 11245, 11310, 11375, 11440, 11505, 11570,
		11635, 11700, 11765, 130, 11830, 11895, 130, 11960, 12025, 12090,
		12155, 130, 12220, 12285, 12350, 12415, 12480, 130, 12545, 12610,
		12675, 12740, 130, 12805, 130, 12870, 12935, 13000, 13065, 13130,
		13195, 1495, 13260, 13325, 13390, 13455, 130, 13520, 13585, 13650,
		130, 13715, 130, 130, 13780, 130, 13845, 13910, 13975, 14040,
		14105, 14170, 14235, 14300, 14365, 130, 130, 130, 14430, 14495,
		14560, 130, 14625, 14690, 14755, 14820, 14885, 130, 14950, 15015,
		130, 15080, 130, 15145, 15210, 15275, 15340, 130, 130, 15405,
		15470, 15535, 15600, 130, 130, 15665, 15730, 130, 130, 15795,
		15860, 15925, 15990, 16055, 16120, 16185, 16250, 130, 130, 16315,
		16380, 16445, 130, 130, 16510, 130, 16575, 16640, 16705, 16770,
		130, 130, 16835, 130, 16900, 16965, 130, 17030, 130, 130, 17095,
		130 };

	/**
	 * The packed transition table of the DFA (part 0)
	 */
	final private static String yy_packed0 = "\1\2\1\3\2\4\1\5\1\4\1\3\1\6\1\7"
		+ "\1\6\1\10\1\3\1\11\1\12\1\13\1\14\1\15"
		+ "\1\16\1\17\1\20\1\21\1\22\1\23\1\24\3\3"
		+ "\1\25\2\3\1\26\1\3\1\27\1\30\1\31\1\32"
		+ "\1\33\1\34\1\35\1\36\1\37\1\40\1\41\1\42"
		+ "\1\43\1\44\1\45\1\46\1\47\1\50\1\51\1\52"
		+ "\1\53\1\54\4\3\1\55\1\56\1\3\1\57\1\60"
		+ "\1\61\1\3\7\2\1\0\1\2\2\0\6\2\6\0"
		+ "\11\2\23\0\17\2\6\3\1\0\1\7\2\0\6\3"
		+ "\6\0\11\3\23\0\16\3\2\62\4\4\1\62\1\0"
		+ "\1\62\2\0\4\62\1\63\1\62\6\0\2\64\2\62"
		+ "\2\65\1\63\2\66\1\67\22\0\20\62\1\70\1\71"
		+ "\1\72\1\71\1\62\1\0\1\62\2\0\4\62\1\73"
		+ "\1\62\6\0\2\64\2\74\2\75\1\73\2\76\1\77"
		+ "\22\0\16\62\7\0\1\6\1\0\1\6\67\0\7\2"
		+ "\1\0\1\2\2\0\1\100\5\2\6\0\11\2\23\0"
		+ "\16\2\51\0\1\101\27\0\1\2\6\3\1\0\1\7"
		+ "\2\0\6\3\6\0\4\3\1\102\4\3\23\0\16\3"
		+ "\1\2\6\3\1\0\1\7\2\0\1\103\5\3\6\0"
		+ "\4\3\1\104\4\3\23\0\1\105\15\3\1\2\6\3"
		+ "\1\0\1\7\2\0\1\3\1\106\4\3\6\0\11\3"
		+ "\23\0\3\3\1\107\1\3\1\110\10\3\1\2\6\3"
		+ "\1\0\1\7\2\0\6\3\6\0\1\111\10\3\23\0"
		+ "\1\112\2\3\1\113\3\3\1\114\6\3\1\2\6\3"
		+ "\1\0\1\7\2\0\1\3\1\115\4\3\6\0\11\3"
		+ "\23\0\6\3\1\116\7\3\10\117\1\120\1\0\7\117"
		+ "\1\121\57\117\10\17\1\122\1\0\10\17\1\123\56\17"
		+ "\23\0\1\124\1\125\24\0\1\126\100\0\1\127\54\0"
		+ "\1\130\23\0\1\131\55\0\1\132\22\0\1\133\27\0"
		+ "\1\2\6\3\1\0\1\7\2\0\6\3\6\0\11\3"
		+ "\23\0\3\3\1\134\12\3\1\2\6\3\1\0\1\7"
		+ "\2\0\6\3\6\0\1\135\1\3\1\136\6\3\23\0"
		+ "\16\3\1\2\6\3\1\0\1\7\2\0\6\3\6\0"
		+ "\4\3\1\137\4\3\23\0\3\3\1\140\12\3\2\0"
		+ "\2\141\1\142\1\141\245\0\1\143\100\0\1\144\1\145"
		+ "\77\0\1\146\1\0\1\147\76\0\1\150\100\0\1\151"
		+ "\6\0\1\152\71\0\1\153\7\0\1\154\70\0\1\155"
		+ "\27\0\1\2\6\3\1\0\1\7\2\0\3\3\1\156"
		+ "\2\3\6\0\11\3\23\0\16\3\1\2\6\3\1\0"
		+ "\1\7\2\0\1\157\4\3\1\160\6\0\11\3\23\0"
		+ "\5\3\1\161\1\162\5\3\1\163\1\3\1\2\6\3"
		+ "\1\0\1\7\2\0\6\3\6\0\1\164\10\3\23\0"
		+ "\1\165\2\3\1\166\2\3\1\167\7\3\1\2\6\3"
		+ "\1\0\1\7\2\0\2\3\1\170\1\3\1\171\1\3"
		+ "\6\0\11\3\23\0\11\3\1\172\4\3\1\2\6\3"
		+ "\1\0\1\7\2\0\6\3\6\0\11\3\23\0\3\3"
		+ "\1\173\12\3\1\2\6\3\1\0\1\7\2\0\1\174"
		+ "\1\175\4\3\6\0\11\3\23\0\1\176\15\3\1\2"
		+ "\6\3\1\0\1\7\2\0\6\3\6\0\11\3\23\0"
		+ "\3\3\1\177\12\3\1\2\6\3\1\0\1\7\2\0"
		+ "\6\3\6\0\11\3\23\0\6\3\1\200\7\3\7\62"
		+ "\1\0\1\62\2\0\6\62\6\0\12\62\22\0\20\62"
		+ "\4\201\1\62\1\0\1\62\2\0\6\62\4\0\2\202"
		+ "\12\62\22\0\20\62\4\67\1\62\1\0\1\62\2\0"
		+ "\4\62\1\63\1\62\6\0\4\62\2\65\1\63\2\66"
		+ "\1\62\22\0\20\62\4\70\1\62\1\0\1\62\2\0"
		+ "\4\62\1\63\1\62\6\0\4\62\2\65\1\63\2\66"
		+ "\1\67\22\0\20\62\1\70\3\71\1\62\1\0\1\62"
		+ "\2\0\4\62\1\63\1\62\6\0\2\203\2\62\2\65"
		+ "\1\63\2\66\1\67\22\0\20\62\1\70\1\71\1\72"
		+ "\1\71\1\62\1\0\1\62\2\0\4\62\1\73\1\62"
		+ "\6\0\2\203\2\62\2\75\1\73\2\76\1\77\22\0"
		+ "\17\62\5\204\1\62\1\0\1\62\2\0\3\62\2\204"
		+ "\1\62\6\0\4\62\5\204\1\62\22\0\1\204\1\62"
		+ "\1\204\15\62\4\205\1\62\1\0\1\62\2\0\6\62"
		+ "\4\0\2\206\12\62\22\0\20\62\2\67\1\77\1\67"
		+ "\1\62\1\0\1\62\2\0\4\62\1\73\1\62\6\0"
		+ "\4\62\2\75\1\73\2\76\1\62\22\0\16\62\1\2"
		+ "\5\207\1\2\1\0\1\2\2\0\3\2\2\207\1\2"
		+ "\6\0\4\2\5\207\23\0\1\207\1\2\1\207\14\2"
		+ "\6\3\1\0\1\7\2\0\5\3\1\210\6\0\11\3"
		+ "\23\0\16\3\1\2\6\3\1\0\1\7\2\0\6\3"
		+ "\6\0\1\211\10\3\23\0\16\3\1\2\6\3\1\0"
		+ "\1\7\2\0\6\3\6\0\11\3\23\0\14\3\1\212"
		+ "\1\3\1\2\6\3\1\0\1\7\2\0\5\3\1\213"
		+ "\6\0\11\3\23\0\16\3\1\2\6\3\1\0\1\7"
		+ "\2\0\6\3\6\0\4\3\1\214\4\3\23\0\16\3"
		+ "\1\2\6\3\1\0\1\7\2\0\6\3\6\0\11\3"
		+ "\23\0\3\3\1\215\12\3\1\2\6\3\1\0\1\7"
		+ "\2\0\5\3\1\216\6\0\11\3\23\0\16\3\1\2"
		+ "\6\3\1\0\1\7\2\0\6\3\6\0\11\3\23\0"
		+ "\3\3\1\217\12\3\1\2\6\3\1\0\1\7\2\0"
		+ "\6\3\6\0\1\220\10\3\23\0\16\3\1\2\6\3"
		+ "\1\0\1\7\2\0\1\3\1\221\4\3\6\0\11\3"
		+ "\23\0\16\3\1\2\6\3\1\0\1\7\2\0\2\3"
		+ "\1\222\3\3\6\0\11\3\23\0\16\3\1\2\6\3"
		+ "\1\0\1\7\2\0\1\223\5\3\6\0\11\3\23\0"
		+ "\1\224\4\3\1\225\10\3\1\2\6\3\1\0\1\7"
		+ "\2\0\1\3\1\226\4\3\6\0\11\3\23\0\7\3"
		+ "\1\227\6\3\10\230\1\231\1\0\7\230\1\232\62\230"
		+ "\1\233\2\234\2\230\1\117\1\0\1\230\1\235\7\117"
		+ "\56\230\3\236\3\17\2\236\1\17\1\0\1\236\1\237"
		+ "\6\17\1\240\56\236\11\124\1\0\67\124\24\241\1\242"
		+ "\54\241\1\2\6\3\1\0\1\7\2\0\2\3\1\243"
		+ "\3\3\6\0\11\3\23\0\16\3\1\2\6\3\1\0"
		+ "\1\7\2\0\6\3\6\0\11\3\23\0\1\3\1\244"
		+ "\14\3\1\2\6\3\1\0\1\7\2\0\5\3\1\245"
		+ "\6\0\11\3\23\0\16\3\1\2\6\3\1\0\1\7"
		+ "\2\0\4\3\1\246\1\3\6\0\11\3\23\0\16\3"
		+ "\1\2\6\3\1\0\1\7\2\0\1\247\5\3\6\0"
		+ "\11\3\23\0\16\3\2\0\4\141\11\0\1\250\13\0"
		+ "\2\251\1\250\2\252\43\0\2\141\1\142\1\141\11\0"
		+ "\1\253\13\0\2\254\1\253\2\255\112\0\1\256\1\257"
		+ "\77\0\1\260\27\0\1\2\6\3\1\0\1\7\2\0"
		+ "\6\3\6\0\11\3\23\0\1\3\1\261\14\3\1\2"
		+ "\6\3\1\0\1\7\2\0\6\3\6\0\11\3\23\0"
		+ "\12\3\1\262\3\3\1\2\6\3\1\0\1\7\2\0"
		+ "\1\3\1\263\4\3\6\0\11\3\23\0\1\264\15\3"
		+ "\1\2\6\3\1\0\1\7\2\0\2\3\1\265\3\3"
		+ "\6\0\11\3\23\0\16\3\1\2\6\3\1\0\1\7"
		+ "\2\0\6\3\6\0\11\3\23\0\3\3\1\266\12\3"
		+ "\1\2\6\3\1\0\1\7\2\0\6\3\6\0\11\3"
		+ "\23\0\7\3\1\267\6\3\1\2\6\3\1\0\1\7"
		+ "\2\0\6\3\6\0\11\3\23\0\1\270\15\3\1\2"
		+ "\6\3\1\0\1\7\2\0\5\3\1\271\6\0\11\3"
		+ "\23\0\1\3\1\272\14\3\1\2\6\3\1\0\1\7"
		+ "\2\0\2\3\1\273\3\3\6\0\11\3\23\0\16\3"
		+ "\1\2\6\3\1\0\1\7\2\0\6\3\6\0\11\3"
		+ "\23\0\1\274\15\3\1\2\6\3\1\0\1\7\2\0"
		+ "\5\3\1\275\6\0\11\3\23\0\1\3\1\276\14\3"
		+ "\1\2\6\3\1\0\1\7\2\0\6\3\6\0\11\3"
		+ "\23\0\12\3\1\277\3\3\1\2\6\3\1\0\1\7"
		+ "\2\0\5\3\1\300\6\0\11\3\23\0\16\3\1\2"
		+ "\6\3\1\0\1\7\2\0\3\3\1\301\2\3\6\0"
		+ "\11\3\23\0\16\3\1\2\6\3\1\0\1\7\2\0"
		+ "\6\3\6\0\11\3\23\0\3\3\1\302\3\3\1\303"
		+ "\6\3\1\2\6\3\1\0\1\7\2\0\6\3\6\0"
		+ "\11\3\23\0\2\3\1\304\13\3\1\2\6\3\1\0"
		+ "\1\7\2\0\6\3\6\0\1\305\10\3\23\0\7\3"
		+ "\1\306\6\3\1\2\6\3\1\0\1\7\2\0\6\3"
		+ "\6\0\11\3\23\0\7\3\1\307\6\3\2\62\4\201"
		+ "\1\62\1\0\1\62\2\0\4\62\1\63\1\62\6\0"
		+ "\6\62\1\63\2\66\1\62\22\0\16\62\2\0\4\310"
		+ "\73\0\1\62\5\204\1\62\1\0\1\62\2\0\3\62"
		+ "\2\204\1\62\6\0\2\311\2\62\5\204\1\62\22\0"
		+ "\1\204\1\62\1\204\15\62\4\205\1\62\1\0\1\62"
		+ "\2\0\4\62\1\73\1\62\6\0\6\62\1\73\2\76"
		+ "\1\62\22\0\16\62\2\0\4\312\73\0\1\2\5\313"
		+ "\1\2\1\0\1\2\2\0\3\2\2\313\1\2\6\0"
		+ "\4\2\5\313\23\0\1\313\1\2\1\313\14\2\6\3"
		+ "\1\0\1\7\2\0\1\314\5\3\6\0\11\3\23\0"
		+ "\16\3\1\2\6\3\1\0\1\7\2\0\6\3\6\0"
		+ "\1\315\10\3\23\0\16\3\1\2\6\3\1\0\1\7"
		+ "\2\0\6\3\6\0\11\3\23\0\7\3\1\316\6\3"
		+ "\1\2\6\3\1\0\1\7\2\0\6\3\6\0\11\3"
		+ "\23\0\1\317\15\3\1\2\6\3\1\0\1\7\2\0"
		+ "\6\3\6\0\1\320\10\3\23\0\16\3\1\2\6\3"
		+ "\1\0\1\7\2\0\6\3\6\0\4\3\1\321\4\3"
		+ "\23\0\16\3\1\2\6\3\1\0\1\7\2\0\6\3"
		+ "\6\0\11\3\23\0\1\322\15\3\1\2\6\3\1\0"
		+ "\1\7\2\0\6\3\6\0\11\3\23\0\1\3\1\223"
		+ "\14\3\1\2\6\3\1\0\1\7\2\0\6\3\6\0"
		+ "\11\3\23\0\1\323\15\3\1\2\6\3\1\0\1\7"
		+ "\2\0\6\3\6\0\4\3\1\324\4\3\23\0\16\3"
		+ "\1\2\6\3\1\0\1\7\2\0\2\3\1\325\3\3"
		+ "\6\0\11\3\23\0\16\3\1\2\6\3\1\0\1\7"
		+ "\2\0\6\3\6\0\11\3\23\0\3\3\1\326\12\3"
		+ "\1\2\6\3\1\0\1\7\2\0\6\3\6\0\11\3"
		+ "\23\0\1\3\1\327\14\3\10\230\1\231\1\0\7\230"
		+ "\1\121\70\230\1\0\72\230\3\117\2\230\1\231\1\0"
		+ "\7\230\1\232\62\230\3\233\2\230\1\231\1\0\7\230"
		+ "\1\232\60\230\5\330\2\230\1\231\1\0\4\230\2\330"
		+ "\1\230\1\121\11\230\5\330\23\230\1\330\1\230\1\330"
		+ "\13\230\11\236\1\0\10\236\1\331\57\236\5\332\3\236"
		+ "\1\0\4\236\2\332\2\236\1\331\10\236\5\332\23\236"
		+ "\1\332\1\236\1\332\13\236\10\240\1\333\1\0\10\240"
		+ "\1\123\56\240\24\241\1\334\54\241\23\335\1\336\1\242"
		+ "\54\335\1\2\6\3\1\0\1\7\2\0\6\3\6\0"
		+ "\11\3\23\0\10\3\1\337\5\3\1\2\6\3\1\0"
		+ "\1\7\2\0\6\3\6\0\4\3\1\340\4\3\23\0"
		+ "\16\3\1\2\6\3\1\0\1\7\2\0\6\3\6\0"
		+ "\4\3\1\341\4\3\23\0\16\3\1\2\6\3\1\0"
		+ "\1\7\2\0\6\3\6\0\11\3\23\0\1\342\15\3"
		+ "\1\2\6\3\1\0\1\7\2\0\3\3\1\343\2\3"
		+ "\6\0\11\3\23\0\16\3\2\0\4\310\17\0\2\202"
		+ "\54\0\4\312\17\0\2\206\123\0\1\344\27\0\1\2"
		+ "\6\3\1\0\1\7\2\0\5\3\1\345\6\0\11\3"
		+ "\23\0\16\3\1\2\6\3\1\0\1\7\2\0\6\3"
		+ "\6\0\4\3\1\346\4\3\23\0\16\3\1\2\6\3"
		+ "\1\0\1\7\2\0\6\3\6\0\11\3\23\0\7\3"
		+ "\1\347\6\3\1\2\6\3\1\0\1\7\2\0\5\3"
		+ "\1\350\6\0\11\3\23\0\16\3\1\2\6\3\1\0"
		+ "\1\7\2\0\6\3\6\0\11\3\23\0\2\3\1\351"
		+ "\13\3\1\2\6\3\1\0\1\7\2\0\1\3\1\352"
		+ "\4\3\6\0\11\3\23\0\16\3\1\2\6\3\1\0"
		+ "\1\7\2\0\5\3\1\353\6\0\11\3\23\0\16\3"
		+ "\1\2\6\3\1\0\1\7\2\0\6\3\6\0\11\3"
		+ "\23\0\1\3\1\354\14\3\1\2\6\3\1\0\1\7"
		+ "\2\0\6\3\6\0\11\3\23\0\2\3\1\355\13\3"
		+ "\1\2\6\3\1\0\1\7\2\0\6\3\6\0\4\3"
		+ "\1\356\4\3\23\0\16\3\1\2\6\3\1\0\1\7"
		+ "\2\0\5\3\1\357\6\0\11\3\23\0\1\3\1\360"
		+ "\14\3\1\2\6\3\1\0\1\7\2\0\1\3\1\361"
		+ "\4\3\6\0\11\3\23\0\16\3\1\2\6\3\1\0"
		+ "\1\7\2\0\6\3\6\0\4\3\1\362\4\3\23\0"
		+ "\16\3\1\2\6\3\1\0\1\7\2\0\5\3\1\363"
		+ "\6\0\11\3\23\0\16\3\1\2\6\3\1\0\1\7"
		+ "\2\0\6\3\6\0\1\364\10\3\23\0\3\3\1\365"
		+ "\12\3\1\2\6\3\1\0\1\7\2\0\6\3\6\0"
		+ "\11\3\23\0\3\3\1\366\12\3\1\2\6\3\1\0"
		+ "\1\7\2\0\6\3\6\0\1\367\10\3\23\0\16\3"
		+ "\1\2\6\3\1\0\1\7\2\0\5\3\1\370\6\0"
		+ "\11\3\23\0\16\3\1\2\6\3\1\0\1\7\2\0"
		+ "\6\3\6\0\11\3\23\0\13\3\1\371\2\3\1\2"
		+ "\6\3\1\0\1\7\2\0\6\3\6\0\11\3\23\0"
		+ "\4\3\1\372\11\3\1\2\6\3\1\0\1\7\2\0"
		+ "\6\3\6\0\11\3\23\0\1\373\15\3\1\2\6\3"
		+ "\1\0\1\7\2\0\6\3\6\0\7\3\1\374\1\3"
		+ "\23\0\16\3\1\2\6\3\1\0\1\7\2\0\6\3"
		+ "\6\0\1\375\10\3\23\0\16\3\2\0\4\310\11\0"
		+ "\1\250\15\0\1\250\2\252\43\0\4\312\11\0\1\253"
		+ "\15\0\1\253\2\255\41\0\1\2\5\376\1\2\1\0"
		+ "\1\2\2\0\3\2\2\376\1\2\6\0\4\2\5\376"
		+ "\23\0\1\376\1\2\1\376\14\2\6\3\1\0\1\7"
		+ "\2\0\1\3\1\377\4\3\6\0\11\3\23\0\16\3"
		+ "\1\2\6\3\1\0\1\7\2\0\6\3\6\0\11\3"
		+ "\23\0\13\3\1\u0100\2\3\1\2\6\3\1\0\1\7"
		+ "\2\0\6\3\6\0\11\3\23\0\4\3\1\u0101\11\3"
		+ "\1\2\6\3\1\0\1\7\2\0\6\3\6\0\4\3"
		+ "\1\u0102\4\3\23\0\16\3\1\2\6\3\1\0\1\7"
		+ "\2\0\5\3\1\u0103\6\0\11\3\23\0\16\3\1\2"
		+ "\6\3\1\0\1\7\2\0\6\3\6\0\1\u0104\10\3"
		+ "\23\0\16\3\1\2\6\3\1\0\1\7\2\0\6\3"
		+ "\6\0\11\3\23\0\1\3\1\u0105\14\3\1\2\6\3"
		+ "\1\0\1\7\2\0\6\3\6\0\11\3\23\0\14\3"
		+ "\1\u0106\1\3\1\230\5\u0107\2\230\1\231\1\0\4\230"
		+ "\2\u0107\1\230\1\121\11\230\5\u0107\23\230\1\u0107\1\230"
		+ "\1\u0107\13\230\1\236\5\u0108\3\236\1\0\4\236\2\u0108"
		+ "\2\236\1\331\10\236\5\u0108\23\236\1\u0108\1\236\1\u0108"
		+ "\13\236\3\0\3\240\2\0\1\240\2\0\1\u0109\7\240"
		+ "\56\0\23\241\1\u010a\1\334\54\241\24\335\1\242\54\335"
		+ "\1\2\6\3\1\0\1\7\2\0\2\3\1\u010b\3\3"
		+ "\6\0\11\3\23\0\16\3\1\2\6\3\1\0\1\7"
		+ "\2\0\1\u010c\5\3\6\0\11\3\23\0\16\3\1\2"
		+ "\6\3\1\0\1\7\2\0\6\3\6\0\1\u010d\10\3"
		+ "\23\0\16\3\1\2\6\3\1\0\1\7\2\0\1\3"
		+ "\1\u010e\4\3\6\0\11\3\23\0\16\3\1\2\6\3"
		+ "\1\0\1\7\2\0\1\3\1\u010f\4\3\6\0\11\3"
		+ "\23\0\16\3\1\2\6\3\1\0\1\7\2\0\6\3"
		+ "\6\0\11\3\23\0\2\3\1\u0110\13\3\1\2\6\3"
		+ "\1\0\1\7\2\0\6\3\6\0\11\3\23\0\7\3"
		+ "\1\u0111\6\3\1\2\6\3\1\0\1\7\2\0\6\3"
		+ "\6\0\11\3\23\0\6\3\1\u0112\7\3\1\2\6\3"
		+ "\1\0\1\7\2\0\5\3\1\u0113\6\0\11\3\23\0"
		+ "\16\3\1\2\6\3\1\0\1\7\2\0\6\3\6\0"
		+ "\11\3\23\0\2\3\1\u0114\13\3\1\2\6\3\1\0"
		+ "\1\7\2\0\6\3\6\0\11\3\23\0\1\3\1\u0115"
		+ "\14\3\1\2\6\3\1\0\1\7\2\0\6\3\6\0"
		+ "\11\3\23\0\6\3\1\u0116\7\3\1\2\6\3\1\0"
		+ "\1\7\2\0\6\3\6\0\11\3\23\0\7\3\1\u0117"
		+ "\6\3\1\2\6\3\1\0\1\7\2\0\5\3\1\u0118"
		+ "\6\0\11\3\23\0\16\3\1\2\6\3\1\0\1\7"
		+ "\2\0\1\3\1\u0119\4\3\6\0\11\3\23\0\16\3"
		+ "\1\2\6\3\1\0\1\7\2\0\6\3\6\0\11\3"
		+ "\23\0\1\u011a\15\3\1\2\6\3\1\0\1\7\2\0"
		+ "\6\3\6\0\4\3\1\u011b\4\3\23\0\16\3\1\2"
		+ "\6\3\1\0\1\7\2\0\1\3\1\u011c\4\3\6\0"
		+ "\11\3\23\0\16\3\1\2\6\3\1\0\1\7\2\0"
		+ "\6\3\6\0\11\3\23\0\7\3\1\u011d\6\3\1\2"
		+ "\6\3\1\0\1\7\2\0\6\3\6\0\4\3\1\u011e"
		+ "\4\3\23\0\16\3\1\2\6\3\1\0\1\7\2\0"
		+ "\6\3\6\0\11\3\23\0\1\u011f\15\3\1\2\6\3"
		+ "\1\0\1\7\2\0\6\3\6\0\11\3\23\0\1\u0120"
		+ "\15\3\1\2\6\3\1\0\1\7\2\0\5\3\1\u0121"
		+ "\6\0\11\3\23\0\16\3\1\2\6\3\1\0\1\7"
		+ "\2\0\6\3\6\0\4\3\1\u0122\4\3\23\0\16\3"
		+ "\1\2\5\3\1\2\1\0\1\2\2\0\3\2\2\3"
		+ "\1\2\6\0\4\2\5\3\23\0\1\3\1\2\1\3"
		+ "\14\2\6\3\1\0\1\7\2\0\2\3\1\u0123\3\3"
		+ "\6\0\11\3\23\0\16\3\1\2\6\3\1\0\1\7"
		+ "\2\0\6\3\6\0\4\3\1\u0124\4\3\23\0\16\3"
		+ "\1\2\6\3\1\0\1\7\2\0\6\3\6\0\11\3"
		+ "\23\0\1\u0125\15\3\1\2\6\3\1\0\1\7\2\0"
		+ "\6\3\6\0\1\u0126\10\3\23\0\16\3\1\2\6\3"
		+ "\1\0\1\7\2\0\6\3\6\0\11\3\23\0\7\3"
		+ "\1\u0127\6\3\1\2\6\3\1\0\1\7\2\0\6\3"
		+ "\6\0\11\3\23\0\1\3\1\u0128\14\3\1\230\5\u0129"
		+ "\2\230\1\231\1\0\4\230\2\u0129\1\230\1\121\11\230"
		+ "\5\u0129\23\230\1\u0129\1\230\1\u0129\13\230\1\236\5\u012a"
		+ "\3\236\1\0\4\236\2\u012a\2\236\1\331\10\236\5\u012a"
		+ "\23\236\1\u012a\1\236\1\u012a\13\236\1\0\5\u012b\10\0"
		+ "\2\u012b\13\0\5\u012b\23\0\1\u012b\1\0\1\u012b\13\0"
		+ "\1\2\6\3\1\0\1\7\2\0\6\3\6\0\7\3"
		+ "\1\u012c\1\3\23\0\16\3\1\2\6\3\1\0\1\7"
		+ "\2\0\6\3\6\0\1\u012d\10\3\23\0\16\3\1\2"
		+ "\6\3\1\0\1\7\2\0\6\3\6\0\4\3\1\u012e"
		+ "\4\3\23\0\16\3\1\2\6\3\1\0\1\7\2\0"
		+ "\6\3\6\0\11\3\23\0\1\u012f\15\3\1\2\6\3"
		+ "\1\0\1\7\2\0\5\3\1\u0130\6\0\11\3\23\0"
		+ "\16\3\1\2\6\3\1\0\1\7\2\0\6\3\6\0"
		+ "\11\3\23\0\2\3\1\u0131\13\3\1\2\6\3\1\0"
		+ "\1\7\2\0\1\3\1\u0132\4\3\6\0\11\3\23\0"
		+ "\16\3\1\2\6\3\1\0\1\7\2\0\6\3\6\0"
		+ "\11\3\23\0\6\3\1\u0133\7\3\1\2\6\3\1\0"
		+ "\1\7\2\0\2\3\1\u0134\3\3\6\0\11\3\23\0"
		+ "\16\3\1\2\6\3\1\0\1\7\2\0\4\3\1\u0135"
		+ "\1\3\6\0\11\3\23\0\16\3\1\2\6\3\1\0"
		+ "\1\7\2\0\2\3\1\u0136\3\3\6\0\11\3\23\0"
		+ "\16\3\1\2\6\3\1\0\1\7\2\0\6\3\6\0"
		+ "\11\3\23\0\11\3\1\u0137\4\3\1\2\6\3\1\0"
		+ "\1\7\2\0\5\3\1\u0138\6\0\11\3\23\0\16\3"
		+ "\1\2\6\3\1\0\1\7\2\0\6\3\6\0\11\3"
		+ "\23\0\2\3\1\u0139\13\3\1\2\6\3\1\0\1\7"
		+ "\2\0\6\3\6\0\11\3\23\0\2\3\1\u013a\13\3"
		+ "\1\2\6\3\1\0\1\7\2\0\5\3\1\u013b\6\0"
		+ "\11\3\23\0\16\3\1\2\6\3\1\0\1\7\2\0"
		+ "\6\3\6\0\11\3\23\0\10\3\1\u013c\5\3\1\2"
		+ "\6\3\1\0\1\7\2\0\6\3\6\0\11\3\23\0"
		+ "\7\3\1\u013d\6\3\1\2\6\3\1\0\1\7\2\0"
		+ "\2\3\1\u013e\3\3\6\0\11\3\23\0\16\3\1\2"
		+ "\6\3\1\0\1\7\2\0\6\3\6\0\11\3\23\0"
		+ "\5\3\1\u013f\10\3\1\2\6\3\1\0\1\7\2\0"
		+ "\6\3\6\0\4\3\1\u0140\4\3\23\0\16\3\1\230"
		+ "\5\117\2\230\1\231\1\0\4\230\2\117\1\230\1\121"
		+ "\11\230\5\117\23\230\1\117\1\230\1\117\13\230\1\236"
		+ "\5\17\3\236\1\0\4\236\2\17\2\236\1\331\10\236"
		+ "\5\17\23\236\1\17\1\236\1\17\13\236\1\0\5\u0141"
		+ "\10\0\2\u0141\13\0\5\u0141\23\0\1\u0141\1\0\1\u0141"
		+ "\13\0\1\2\6\3\1\0\1\7\2\0\6\3\6\0"
		+ "\11\3\23\0\1\3\1\u0142\14\3\1\2\6\3\1\0"
		+ "\1\7\2\0\5\3\1\u0143\6\0\11\3\23\0\16\3"
		+ "\1\2\6\3\1\0\1\7\2\0\6\3\6\0\11\3"
		+ "\23\0\2\3\1\u0144\13\3\1\2\6\3\1\0\1\7"
		+ "\2\0\4\3\1\u0145\1\3\6\0\11\3\23\0\16\3"
		+ "\1\2\6\3\1\0\1\7\2\0\6\3\6\0\11\3"
		+ "\23\0\3\3\1\u0146\12\3\1\2\6\3\1\0\1\7"
		+ "\2\0\1\u0147\5\3\6\0\11\3\23\0\16\3\1\2"
		+ "\6\3\1\0\1\7\2\0\6\3\6\0\11\3\23\0"
		+ "\1\u0148\15\3\1\2\6\3\1\0\1\7\2\0\6\3"
		+ "\6\0\11\3\23\0\2\3\1\u0149\13\3\1\2\6\3"
		+ "\1\0\1\7\2\0\6\3\6\0\4\3\1\u014a\4\3"
		+ "\23\0\16\3\1\2\6\3\1\0\1\7\2\0\5\3"
		+ "\1\u014b\6\0\11\3\23\0\16\3\1\2\6\3\1\0"
		+ "\1\7\2\0\6\3\6\0\4\3\1\u014c\4\3\23\0"
		+ "\16\3\1\2\6\3\1\0\1\7\2\0\6\3\6\0"
		+ "\4\3\1\u014d\4\3\23\0\16\3\1\2\6\3\1\0"
		+ "\1\7\2\0\6\3\6\0\1\u014e\10\3\23\0\16\3"
		+ "\1\2\6\3\1\0\1\7\2\0\2\3\1\u014f\3\3"
		+ "\6\0\11\3\23\0\16\3\1\0\5\u0150\10\0\2\u0150"
		+ "\13\0\5\u0150\23\0\1\u0150\1\0\1\u0150\13\0\1\2"
		+ "\6\3\1\0\1\7\2\0\5\3\1\u0151\6\0\11\3"
		+ "\23\0\16\3\1\2\6\3\1\0\1\7\2\0\6\3"
		+ "\6\0\11\3\23\0\12\3\1\u0152\3\3\1\2\6\3"
		+ "\1\0\1\7\2\0\2\3\1\u0153\3\3\6\0\11\3"
		+ "\23\0\16\3\1\2\6\3\1\0\1\7\2\0\6\3"
		+ "\6\0\4\3\1\u0154\4\3\23\0\16\3\1\2\6\3"
		+ "\1\0\1\7\2\0\6\3\6\0\11\3\23\0\2\3"
		+ "\1\u0155\13\3\1\2\6\3\1\0\1\7\2\0\6\3"
		+ "\6\0\4\3\1\u0156\4\3\23\0\16\3\1\2\6\3"
		+ "\1\0\1\7\2\0\2\3\1\u0157\3\3\6\0\11\3"
		+ "\23\0\16\3\1\2\6\3\1\0\1\7\2\0\6\3"
		+ "\6\0\4\3\1\u0158\4\3\23\0\16\3\1\2\6\3"
		+ "\1\0\1\7\2\0\6\3\6\0\4\3\1\u0159\4\3"
		+ "\23\0\16\3\1\2\6\3\1\0\1\7\2\0\5\3"
		+ "\1\u015a\6\0\11\3\23\0\16\3\1\0\5\240\10\0"
		+ "\2\240\13\0\5\240\23\0\1\240\1\0\1\240\13\0"
		+ "\1\2\6\3\1\0\1\7\2\0\6\3\6\0\11\3"
		+ "\23\0\7\3\1\u015b\6\3\1\2\6\3\1\0\1\7"
		+ "\2\0\6\3\6\0\4\3\1\u015c\4\3\23\0\16\3"
		+ "\1\2\6\3\1\0\1\7\2\0\6\3\6\0\11\3"
		+ "\23\0\3\3\1\u015d\12\3\1\2\6\3\1\0\1\7"
		+ "\2\0\5\3\1\u015e\6\0\11\3\23\0\16\3\1\2"
		+ "\6\3\1\0\1\7\2\0\6\3\6\0\7\3\1\u015f"
		+ "\1\3\23\0\16\3\1\2\6\3\1\0\1\7\2\0"
		+ "\6\3\6\0\11\3\23\0\15\3\1\u0160\1\2\6\3"
		+ "\1\0\1\7\2\0\4\3\1\u0161\1\3\6\0\11\3"
		+ "\23\0\16\3\1\2\6\3\1\0\1\7\2\0\6\3"
		+ "\6\0\11\3\23\0\1\3\1\u0162\14\3\1\2\6\3"
		+ "\1\0\1\7\2\0\6\3\6\0\4\3\1\u0163\4\3"
		+ "\23\0\16\3\1\2\6\3\1\0\1\7\2\0\6\3"
		+ "\6\0\7\3\1\u0164\1\3\23\0\16\3";

	/**
	 * The transition table of the DFA
	 */
	final private static int yytrans[] = yy_unpack();

	/* error codes */
	final private static int YY_UNKNOWN_ERROR = 0;
	final private static int YY_NO_MATCH = 2;
	/* error messages for the codes above */
	final private static String YY_ERROR_MSG[] = {
		"Unkown internal scanner error", "Internal error: unknown state",
		"Error: could not match input",
	"Error: pushback value was too large" };

	/**
	 * YY_ATTRIBUTE[aState] contains the attributes of state <code>aState</code>
	 */
	private final static byte YY_ATTRIBUTE[] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
		1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 1,
		1, 1, 1, 9, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
		1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
		1, 1, 1, 0, 9, 1, 9, 1, 1, 9, 9, 9, 9, 9, 9, 1, 1, 1, 1, 1, 1, 1,
		9, 9, 1, 9, 1, 9, 9, 9, 9, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
		1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1,
		1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
		1, 1, 1, 9, 0, 9, 9, 0, 9, 9, 1, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
		1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
		1, 1, 1, 1, 1, 1, 1, 1, 9, 1, 0, 1, 1, 9, 1, 1, 1, 1, 1, 9, 1, 1,
		1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
		1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 9, 1, 1, 1, 1, 1, 1, 1, 1,
		1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
		1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
		1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1,
		1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };

	/**
	 * Prints out tokens from a file or System.in. If no arguments are given,
	 * System.in will be used for input. If more arguments are given, the first
	 * argument will be used as the name of the file to use as input
	 * 
	 * @param args
	 *            program arguments, of which the first is a filename
	 */
	public static void main(final String[] args) {
		InputStream in;
		try {
			if (args.length > 0) {
				final File f = new File(args[0]);
				if (f.exists()) {
					if (f.canRead()) {
						in = new FileInputStream(f);
					} else {
						throw new IOException("Could not open " + args[0]);
					}
				} else {
					throw new IOException("Could not find " + args[0]);
				}
			} else {
				in = System.in;
			}
			final JavaLexer shredder = new JavaLexer(in);
			Token t;
			while ((t = shredder.getNextToken()) != null) {
				if (t.getID() != JavaToken.WHITE_SPACE) {
					System.out.println(t);
				}
			}
		} catch (final IOException e) {
			System.out.println(e.getMessage());
		}
	}

	/**
	 * Unpacks the split, compressed DFA transition table.
	 * 
	 * @return the unpacked transition table
	 */
	private static int[] yy_unpack() {
		final int[] trans = new int[17160];
		int offset = 0;
		offset = yy_unpack(yy_packed0, offset, trans);
		return trans;
	}

	/**
	 * Unpacks the compressed DFA transition table.
	 * 
	 * @param packed
	 *            the packed transition table
	 * @return the index of the last entry
	 */
	private static int yy_unpack(final String packed, final int offset, final int[] trans) {
		int i = 0; /* index in packed string */
		int j = offset; /* index in unpacked array */
		final int l = packed.length();
		while (i < l) {
			int count = packed.charAt(i++);
			int value = packed.charAt(i++);
			value--;
			do
				trans[j++] = value;
			while (--count > 0);
		}
		return j;
	}

	/** the input device */
	private java.io.Reader yy_reader;

	/** the current state of the DFA */
	private int yy_state;

	/** the current lexical state */
	private int yy_lexical_state = YYINITIAL;

	/**
	 * this buffer contains the current text to be matched and is the source of
	 * the yytext() string
	 */
	private char yy_buffer[] = new char[YY_BUFFERSIZE];

	/** the textposition at the last accepting state */
	private int yy_markedPos;

	/** the textposition at the last state to be included in yytext */
	@SuppressWarnings("unused")
	private int yy_pushbackPos;

	/** the current text position in the buffer */
	private int yy_currentPos;

	/** startRead marks the beginning of the yytext() string in the buffer */
	private int yy_startRead;

	/**
	 * endRead marks the last character in the buffer, that has been read from
	 * input
	 */
	private int yy_endRead;

	/** number of newlines encountered up to the start of the matched text */
	private int yyline;
	/** the number of characters up to the start of the matched text */
	private int yychar;

	/** yy_atEOF == true <=> the scanner is at the EOF */
	private boolean yy_atEOF;

	/* user code: */
	private int lastToken;

	private final int nextState = YYINITIAL;

	/**
	 * Creates a new scanner. There is also java.io.Reader version of this
	 * constructor.
	 * 
	 * @param in
	 *            the java.io.Inputstream to read input from.
	 */
	public JavaLexer(final java.io.InputStream in) {
		this(new java.io.InputStreamReader(in));
	}

	/**
	 * Creates a new scanner There is also a java.io.InputStream version of this
	 * constructor.
	 * 
	 * @param in
	 *            the java.io.Reader to read input from.
	 */
	public JavaLexer(final java.io.Reader in) {
		this.yy_reader = in;
	}

	/**
	 * Resumes scanning until the next regular expression is matched, the end of
	 * input is encountered or an I/O-Error occurs.
	 * 
	 * @return the next token
	 * @exception IOException
	 *                if any I/O-Error occurs
	 */
	public Token getNextToken() throws java.io.IOException {
		int yy_input;
		int yy_action;

		// cached fields:
		int yy_currentPos_l;
		int yy_markedPos_l;
		int yy_endRead_l = yy_endRead;
		char[] yy_buffer_l = yy_buffer;
		final char[] yycmap_l = yycmap;

		final int[] yytrans_l = yytrans;
		final int[] yy_rowMap_l = yy_rowMap;
		final byte[] yy_attr_l = YY_ATTRIBUTE;

		while (true) {
			yy_markedPos_l = yy_markedPos;

			yychar += yy_markedPos_l - yy_startRead;

			boolean yy_r = false;
			for (yy_currentPos_l = yy_startRead; yy_currentPos_l < yy_markedPos_l; yy_currentPos_l++) {
				switch (yy_buffer_l[yy_currentPos_l]) {
				case '\u000B':
				case '\u000C':
				case '\u0085':
				case '\u2028':
				case '\u2029':
					yyline++;
					yy_r = false;
					break;
				case '\r':
					yyline++;
					yy_r = true;
					break;
				case '\n':
					if (yy_r)
						yy_r = false;
					else {
						yyline++;
					}
					break;
				default:
					yy_r = false;
				}
			}

			if (yy_r) {
				// peek one character ahead if it is \n (if we have counted one
				// line too much)
				boolean yy_peek;
				if (yy_markedPos_l < yy_endRead_l)
					yy_peek = yy_buffer_l[yy_markedPos_l] == '\n';
				else if (yy_atEOF)
					yy_peek = false;
				else {
					final boolean eof = yy_refill();
					yy_markedPos_l = yy_markedPos;
					yy_buffer_l = yy_buffer;
					if (eof)
						yy_peek = false;
					else
						yy_peek = yy_buffer_l[yy_markedPos_l] == '\n';
				}
				if (yy_peek)
					yyline--;
			}
			yy_action = -1;

			yy_currentPos_l = yy_currentPos = yy_startRead = yy_markedPos_l;

			yy_state = yy_lexical_state;

			yy_forAction: {
				while (true) {

					if (yy_currentPos_l < yy_endRead_l)
						yy_input = yy_buffer_l[yy_currentPos_l++];
					else if (yy_atEOF) {
						yy_input = YYEOF;
						break yy_forAction;
					} else {
						// store back cached positions
						yy_currentPos = yy_currentPos_l;
						yy_markedPos = yy_markedPos_l;
						final boolean eof = yy_refill();
						// get translated positions and possibly new buffer
						yy_currentPos_l = yy_currentPos;
						yy_markedPos_l = yy_markedPos;
						yy_buffer_l = yy_buffer;
						yy_endRead_l = yy_endRead;
						if (eof) {
							yy_input = YYEOF;
							break yy_forAction;
						} else {
							yy_input = yy_buffer_l[yy_currentPos_l++];
						}
					}
					final int yy_next = yytrans_l[yy_rowMap_l[yy_state]
					                                          + yycmap_l[yy_input]];
					if (yy_next == -1)
						break yy_forAction;
					yy_state = yy_next;

					final int yy_attributes = yy_attr_l[yy_state];
					if ((yy_attributes & 1) == 1) {
						yy_action = yy_state;
						yy_markedPos_l = yy_currentPos_l;
						if ((yy_attributes & 8) == 8)
							break yy_forAction;
					}

				}
			}

			// store back cached position
			yy_markedPos = yy_markedPos_l;

			switch (yy_action) {

			case 204: {
				lastToken = JavaToken.LITERAL_NULL;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 357:
				break;
			case 49:
			case 52:
			case 55:
			case 59:
			case 60: {
				lastToken = JavaToken.ERROR_FLOAT;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 358:
				break;
			case 5: {
				lastToken = JavaToken.WHITE_SPACE;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 359:
				break;
			case 23: {
				lastToken = JavaToken.SEPARATOR_LPAREN;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 360:
				break;
			case 355: {
				lastToken = JavaToken.RESERVED_WORD_SYNCHRONIZED;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 361:
				break;
			case 175: {
				lastToken = JavaToken.OPERATOR_SHIFT_LEFT_ASSIGN;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 362:
				break;
			case 80: {
				lastToken = JavaToken.ERROR_MALFORMED_CHARACTER;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 363:
				break;
			case 106: {
				lastToken = JavaToken.OPERATOR_BITWISE_OR_ASSIGN;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 364:
				break;
			case 227: {
				lastToken = JavaToken.OPERATOR_SHIFT_RIGHT_UNSIGNED_ASSIGN;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 365:
				break;
			case 211: {
				lastToken = JavaToken.LITERAL_BOOLEAN;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 366:
				break;
			case 1:
			case 6:
			case 63:
			case 134:
			case 202:
			case 253: {
				lastToken = JavaToken.ERROR_IDENTIFIER;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 367:
				break;
			case 95: {
				lastToken = JavaToken.RESERVED_WORD_DO;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 368:
				break;
			case 99: {
				lastToken = JavaToken.OPERATOR_GREATER_THAN_OR_EQUAL;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 369:
				break;
			case 120: {
				lastToken = JavaToken.RESERVED_WORD_IF;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 370:
				break;
			case 174: {
				lastToken = JavaToken.OPERATOR_SHIFT_RIGHT_UNSIGNED;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 371:
				break;
			case 13:
			case 151:
			case 156:
			case 215:
			case 262:
			case 296: {
				lastToken = JavaToken.ERROR_MALFORMED_UNCLOSED_CHARACTER;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 372:
				break;
			case 81:
			case 157:
			case 158:
			case 217:
			case 263:
			case 297: {
				lastToken = JavaToken.ERROR_MALFORMED_UNCLOSED_STRING;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 373:
				break;
			case 82: {
				lastToken = JavaToken.LITERAL_STRING;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 374:
				break;
			case 51: {
				final String text = yytext();
				try {
					if (lastToken == JavaToken.OPERATOR_SUBTRACT) {
						Long.decode('-' + text.substring(0, text.length() - 1));
					} else {
						Long.decode(text.substring(0, text.length() - 1));
					}
					lastToken = JavaToken.LITERAL_LONG_DECIMAL;
				} catch (final NumberFormatException e) {
					lastToken = JavaToken.ERROR_LONG_DECIMIAL_SIZE;
				}
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 375:
				break;
			case 7: {
				lastToken = JavaToken.OPERATOR_MOD;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 376:
				break;
			case 17: {
				lastToken = JavaToken.OPERATOR_ADD;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 377:
				break;
			case 35: {
				lastToken = JavaToken.OPERATOR_BITWISE_COMPLIMENT;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 378:
				break;
			case 36: {
				lastToken = JavaToken.OPERATOR_QUESTION;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 379:
				break;
			case 16: {
				lastToken = JavaToken.OPERATOR_MULTIPLY;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 380:
				break;
			case 18: {
				lastToken = JavaToken.OPERATOR_SUBTRACT;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 381:
				break;
			case 22: {
				lastToken = JavaToken.SEPARATOR_PERIOD;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 382:
				break;
			case 24: {
				lastToken = JavaToken.SEPARATOR_RPAREN;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 383:
				break;
			case 25: {
				lastToken = JavaToken.SEPARATOR_LBRACE;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 384:
				break;
			case 26: {
				lastToken = JavaToken.SEPARATOR_RBRACE;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 385:
				break;
			case 144: {
				lastToken = JavaToken.RESERVED_WORD_FOR;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 386:
				break;
			case 200: {
				/*
				 * A Hex long cannot be too big. After removing initial zeros,
				 * It can have 17 digits, the last of which is the L or l
				 */
				lastToken = JavaToken.LITERAL_LONG_HEXIDECIMAL;
				int i;
				final String text = yytext();
				final int length = text.length();
				for (i = 2; i < length - 17; i++) {
					// check for initial zeros
					if (text.charAt(i) != '0') {
						lastToken = JavaToken.ERROR_LONG_HEXIDECIMAL_SIZE;
					}
				}
				if (length - i > 17) {
					lastToken = JavaToken.ERROR_LONG_HEXIDECIMAL_SIZE;
				}
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 387:
				break;
			case 131: {
				/*
				 * A Hex number cannot be too big. After removing initial zeros,
				 * It can have 8 digits
				 */
				lastToken = JavaToken.LITERAL_INTEGER_HEXIDECIMAL;
				int i;
				final String text = yytext();
				final int length = text.length();
				for (i = 2; i < length - 8; i++) {
					// check for initial zeros
					if (text.charAt(i) != '0') {
						lastToken = JavaToken.ERROR_INTEGER_HEXIDECIMAL_SIZE;
					}
				}
				if (length - i > 8) {
					lastToken = JavaToken.ERROR_INTEGER_HEXIDECIMAL_SIZE;
				}
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 388:
				break;
			case 37: {
				lastToken = JavaToken.OPERATOR_COLON;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 389:
				break;
			case 31: {
				lastToken = JavaToken.OPERATOR_ASSIGN;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 390:
				break;
			case 30: {
				lastToken = JavaToken.SEPARATOR_COMMA;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 391:
				break;
			case 15: {
				lastToken = JavaToken.OPERATOR_DIVIDE;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 392:
				break;
			case 61:
			case 62:
			case 97:
			case 132:
			case 172:
			case 201: {
				lastToken = JavaToken.LITERAL_DOUBLE;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 393:
				break;
			case 98: {
				lastToken = JavaToken.OPERATOR_EQUAL;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 394:
				break;
			case 56:
			case 57: {
				/*
				 * An Octal number cannot be too big. After removing initial
				 * zeros, It can have 11 digits, the first of which must be 3 or
				 * less.
				 */
				lastToken = JavaToken.LITERAL_INTEGER_OCTAL;
				int i;
				final String text = yytext();
				final int length = text.length();
				for (i = 1; i < length - 11; i++) {
					// check for initial zeros
					if (yytext().charAt(i) != '0') {
						lastToken = JavaToken.ERROR_INTEGER_OCTAL_SIZE;
					}
				}
				if (length - i > 11) {
					lastToken = JavaToken.ERROR_INTEGER_OCTAL_SIZE;
				} else if (length - i == 11) {
					// if the rest of the number is as big as possible
					// the first digit can only be 3 or less
					if (text.charAt(i) != '0' && text.charAt(i) != '1'
						&& text.charAt(i) != '2' && text.charAt(i) != '3') {
						lastToken = JavaToken.ERROR_INTEGER_OCTAL_SIZE;
					}
				}
				// Otherwise, it should be OK
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 395:
				break;
			case 344: {
				lastToken = JavaToken.RESERVED_WORD_VOLATILE;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 396:
				break;
			case 339: {
				lastToken = JavaToken.RESERVED_WORD_CONTINUE;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 397:
				break;
			case 336: {
				lastToken = JavaToken.RESERVED_WORD_ABSTRACT;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 398:
				break;
			case 332: {
				lastToken = JavaToken.RESERVED_WORD_PACKAGE;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 399:
				break;
			case 331: {
				lastToken = JavaToken.RESERVED_WORD_PRIVATE;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 400:
				break;
			case 322: {
				lastToken = JavaToken.RESERVED_WORD_DEFAULT;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 401:
				break;
			case 321: {
				lastToken = JavaToken.RESERVED_WORD_EXTENDS;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 402:
				break;
			case 318: {
				lastToken = JavaToken.RESERVED_WORD_FINALLY;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 403:
				break;
			case 317: {
				lastToken = JavaToken.RESERVED_WORD_BOOLEAN;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 404:
				break;
			case 216: {
				lastToken = JavaToken.ERROR_MALFORMED_STRING;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 405:
				break;
			case 84:
			case 160:
			case 161:
			case 219:
			case 220: {
				lastToken = JavaToken.ERROR_UNCLOSED_COMMENT;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 406:
				break;
			case 85: {
				lastToken = JavaToken.OPERATOR_DIVIDE_ASSIGN;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 407:
				break;
			case 58:
			case 170: {
				/*
				 * catch the case of a zero in parsing, so that we do not
				 * incorrectly give an error that a number was rounded to zero
				 */
				lastToken = JavaToken.LITERAL_FLOATING_POINT;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 408:
				break;
			case 251: {
				lastToken = JavaToken.RESERVED_WORD_VOID;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 409:
				break;
			case 245: {
				lastToken = JavaToken.RESERVED_WORD_GOTO;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 410:
				break;
			case 240: {
				lastToken = JavaToken.RESERVED_WORD_CHAR;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 411:
				break;
			case 237: {
				lastToken = JavaToken.RESERVED_WORD_CASE;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 412:
				break;
			case 223: {
				lastToken = JavaToken.RESERVED_WORD_ELSE;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 413:
				break;
			case 222: {
				lastToken = JavaToken.RESERVED_WORD_LONG;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 414:
				break;
			case 214: {
				lastToken = JavaToken.RESERVED_WORD_THIS;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 415:
				break;
			case 208: {
				lastToken = JavaToken.RESERVED_WORD_BYTE;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 416:
				break;
			case 188: {
				lastToken = JavaToken.RESERVED_WORD_INT;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 417:
				break;
			case 87: {
				lastToken = JavaToken.OPERATOR_INCREMENT;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 418:
				break;
			case 89: {
				lastToken = JavaToken.OPERATOR_DECREMENT;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 419:
				break;
			case 103: {
				lastToken = JavaToken.OPERATOR_NOT_EQUAL;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 420:
				break;
			case 137: {
				lastToken = JavaToken.RESERVED_WORD_NEW;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 421:
				break;
			case 148: {
				lastToken = JavaToken.RESERVED_WORD_TRY;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 422:
				break;
			case 153: {
				lastToken = JavaToken.LITERAL_CHARACTER;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 423:
				break;
			case 337: {
				lastToken = JavaToken.RESERVED_WORD_STRICTFP;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 424:
				break;
			case 53:
			case 54:
			case 96:
			case 128:
			case 169:
			case 199: {
				Double d;
				try {
					d = Double.valueOf(yytext());
					if (d.isInfinite() || d.compareTo(new Double(0d)) == 0) {
						lastToken = JavaToken.ERROR_DOUBLE_SIZE;
					} else {
						lastToken = JavaToken.LITERAL_DOUBLE;
					}
				} catch (final NumberFormatException e) {
					lastToken = JavaToken.ERROR_DOUBLE_SIZE;
				}
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 425:
				break;
			case 353: {
				lastToken = JavaToken.RESERVED_WORD_IMPLEMENTS;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 426:
				break;
			case 352: {
				lastToken = JavaToken.RESERVED_WORD_INSTANCEOF;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 427:
				break;
			case 350: {
				lastToken = JavaToken.RESERVED_WORD_PROTECTED;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 428:
				break;
			case 347: {
				lastToken = JavaToken.RESERVED_WORD_INTERFACE;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 429:
				break;
			case 345: {
				lastToken = JavaToken.RESERVED_WORD_TRANSIENT;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 430:
				break;
			case 312: {
				lastToken = JavaToken.RESERVED_WORD_PUBLIC;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 431:
				break;
			case 311: {
				lastToken = JavaToken.RESERVED_WORD_IMPORT;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 432:
				break;
			case 306: {
				lastToken = JavaToken.RESERVED_WORD_SWITCH;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 433:
				break;
			case 301: {
				lastToken = JavaToken.RESERVED_WORD_DOUBLE;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 434:
				break;
			case 295: {
				lastToken = JavaToken.RESERVED_WORD_THROWS;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 435:
				break;
			case 291: {
				lastToken = JavaToken.RESERVED_WORD_NATIVE;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 436:
				break;
			case 290: {
				lastToken = JavaToken.RESERVED_WORD_RETURN;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 437:
				break;
			case 289: {
				lastToken = JavaToken.RESERVED_WORD_WHILE;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 438:
				break;
			case 279: {
				lastToken = JavaToken.RESERVED_WORD_CONST;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 439:
				break;
			case 277: {
				lastToken = JavaToken.RESERVED_WORD_CATCH;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 440:
				break;
			case 276: {
				lastToken = JavaToken.RESERVED_WORD_CLASS;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 441:
				break;
			case 274: {
				lastToken = JavaToken.RESERVED_WORD_SHORT;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 442:
				break;
			case 270: {
				lastToken = JavaToken.RESERVED_WORD_SUPER;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 443:
				break;
			case 261: {
				lastToken = JavaToken.RESERVED_WORD_THROW;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 444:
				break;
			case 259: {
				lastToken = JavaToken.RESERVED_WORD_FINAL;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 445:
				break;
			case 258: {
				lastToken = JavaToken.RESERVED_WORD_FLOAT;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 446:
				break;
			case 256: {
				lastToken = JavaToken.RESERVED_WORD_BREAK;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 447:
				break;
			case 14:
			case 159: {
				/*
				 * most of these errors have to be caught down near the end of
				 * the file. This way, previous expressions of the same length
				 * have precedence. This is really useful for catching anything
				 * bad by just allowing it to slip through the cracks.
				 */
				lastToken = JavaToken.ERROR_UNCLOSED_STRING;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 448:
				break;
			case 2:
			case 8:
			case 9:
			case 10:
			case 11:
			case 12:
			case 19:
			case 20:
			case 21:
			case 41:
			case 42:
			case 43:
			case 44:
			case 45:
			case 46:
			case 47:
			case 48:
			case 65:
			case 66:
			case 67:
			case 68:
			case 69:
			case 70:
			case 71:
			case 72:
			case 73:
			case 74:
			case 75:
			case 76:
			case 77:
			case 91:
			case 92:
			case 93:
			case 94:
			case 109:
			case 110:
			case 111:
			case 112:
			case 113:
			case 114:
			case 115:
			case 116:
			case 117:
			case 118:
			case 119:
			case 121:
			case 122:
			case 123:
			case 124:
			case 125:
			case 126:
			case 127:
			case 135:
			case 136:
			case 138:
			case 139:
			case 140:
			case 141:
			case 142:
			case 143:
			case 145:
			case 146:
			case 147:
			case 149:
			case 150:
			case 162:
			case 163:
			case 164:
			case 165:
			case 166:
			case 176:
			case 177:
			case 178:
			case 179:
			case 180:
			case 181:
			case 182:
			case 183:
			case 184:
			case 185:
			case 186:
			case 187:
			case 189:
			case 190:
			case 191:
			case 192:
			case 193:
			case 194:
			case 195:
			case 196:
			case 197:
			case 198:
			case 203:
			case 205:
			case 206:
			case 207:
			case 209:
			case 210:
			case 212:
			case 213:
			case 224:
			case 225:
			case 226:
			case 228:
			case 229:
			case 230:
			case 231:
			case 232:
			case 233:
			case 234:
			case 235:
			case 236:
			case 238:
			case 239:
			case 241:
			case 242:
			case 243:
			case 244:
			case 246:
			case 247:
			case 248:
			case 249:
			case 250:
			case 252:
			case 254:
			case 255:
			case 257:
			case 260:
			case 266:
			case 267:
			case 268:
			case 269:
			case 271:
			case 272:
			case 273:
			case 275:
			case 278:
			case 280:
			case 281:
			case 282:
			case 283:
			case 284:
			case 285:
			case 286:
			case 287:
			case 288:
			case 292:
			case 293:
			case 294:
			case 299:
			case 300:
			case 302:
			case 303:
			case 305:
			case 307:
			case 308:
			case 309:
			case 310:
			case 313:
			case 314:
			case 315:
			case 316:
			case 319:
			case 323:
			case 324:
			case 325:
			case 326:
			case 327:
			case 328:
			case 329:
			case 330:
			case 333:
			case 334:
			case 338:
			case 340:
			case 341:
			case 342:
			case 343:
			case 346:
			case 348:
			case 349:
			case 351:
			case 354: {
				lastToken = JavaToken.IDENTIFIER;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 449:
				break;
			case 64: {
				lastToken = JavaToken.OPERATOR_MOD_ASSIGN;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 450:
				break;
			case 78:
			case 154:
			case 155: {
				lastToken = JavaToken.ERROR_UNCLOSED_CHARACTER;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 451:
				break;
			case 83: {
				lastToken = JavaToken.COMMENT_END_OF_LINE;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 452:
				break;
			case 86: {
				lastToken = JavaToken.OPERATOR_MULTIPLY_ASSIGN;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 453:
				break;
			case 88: {
				lastToken = JavaToken.OPERATOR_ADD_ASSIGN;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 454:
				break;
			case 90: {
				lastToken = JavaToken.OPERATOR_SUBTRACT_ASSIGN;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 455:
				break;
			case 100: {
				lastToken = JavaToken.OPERATOR_SHIFT_RIGHT;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 456:
				break;
			case 101: {
				lastToken = JavaToken.OPERATOR_LESS_THAN_OR_EQUAL;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 457:
				break;
			case 102: {
				lastToken = JavaToken.OPERATOR_SHIFT_LEFT;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 458:
				break;
			case 104: {
				lastToken = JavaToken.OPERATOR_BITWISE_AND_ASSIGN;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 459:
				break;
			case 105: {
				lastToken = JavaToken.OPERATOR_LOGICAL_AND;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 460:
				break;
			case 107: {
				lastToken = JavaToken.OPERATOR_LOGICAL_OR;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 461:
				break;
			case 108: {
				lastToken = JavaToken.OPERATOR_BITWISE_XOR_ASSIGN;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 462:
				break;
			case 173: {
				lastToken = JavaToken.OPERATOR_SHIFT_RIGHT_ASSIGN;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 463:
				break;
			case 265: {
				lastToken = JavaToken.COMMENT_TRADITIONAL;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 464:
				break;
			case 39: {
				lastToken = JavaToken.OPERATOR_BITWISE_OR;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 465:
				break;
			case 33: {
				lastToken = JavaToken.OPERATOR_LESS_THAN;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 466:
				break;
			case 29: {
				lastToken = JavaToken.SEPARATOR_SEMICOLON;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 467:
				break;
			case 28: {
				lastToken = JavaToken.SEPARATOR_RBRACKET;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 468:
				break;
			case 27: {
				lastToken = JavaToken.SEPARATOR_LBRACKET;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 469:
				break;
			case 304: {
				lastToken = JavaToken.RESERVED_WORD_STATIC;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 470:
				break;
			case 221: {
				lastToken = JavaToken.COMMENT_DOCUMENTATION;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 471:
				break;
			case 50:
			case 167: {
				/*
				 * Sun s java has a few bugs here. Their MAX_FLOAT and MIN_FLOAT
				 * do not quite match the spec. Its not far off, so we will
				 * deal. If they fix then we are fixed. So all good.
				 */
				Float f;
				try {
					f = Float.valueOf(yytext());
					if (f.isInfinite() || f.compareTo(new Float(0f)) == 0) {
						lastToken = JavaToken.ERROR_FLOAT_SIZE;
					} else {
						lastToken = JavaToken.LITERAL_FLOATING_POINT;
					}
				} catch (final NumberFormatException e) {
					lastToken = JavaToken.ERROR_FLOAT_SIZE;
				}
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 472:
				break;
			case 40: {
				lastToken = JavaToken.OPERATOR_BITWISE_XOR;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 473:
				break;
			case 38: {
				lastToken = JavaToken.OPERATOR_BITWISE_AND;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 474:
				break;
			case 34: {
				lastToken = JavaToken.OPERATOR_LOGICAL_NOT;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 475:
				break;
			case 32: {
				lastToken = JavaToken.OPERATOR_GREATER_THAN;
				final String text = yytext();
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 476:
				break;
			case 3:
			case 4: {
				/*
				 * At this point, the number we found could still be too large.
				 * If it is too large, we need to return an error. Java has
				 * methods built in that will decode from a string and throw an
				 * exception the number is too large
				 */
				final String text = yytext();
				try {
					/*
					 * bigger negatives are allowed than positives. Thus we have
					 * to be careful to make sure a neg sign is preserved
					 */
					if (lastToken == JavaToken.OPERATOR_SUBTRACT) {
						Integer.decode('-' + text);
					} else {
						Integer.decode(text);
					}
					lastToken = JavaToken.LITERAL_INTEGER_DECIMAL;
				} catch (final NumberFormatException e) {
					lastToken = JavaToken.ERROR_INTEGER_DECIMIAL_SIZE;
				}
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 477:
				break;
			case 130: {
				/*
				 * An Octal number cannot be too big. After removing initial
				 * zeros, It can have 23 digits, the first of which must be 1 or
				 * less. The last will be the L or l at the end.
				 */
				lastToken = JavaToken.LITERAL_LONG_OCTAL;
				int i;
				final String text = yytext();
				final int length = text.length();
				for (i = 1; i < length - 23; i++) {
					// check for initial zeros
					if (text.charAt(i) != '0') {
						lastToken = JavaToken.ERROR_LONG_OCTAL_SIZE;
					}
				}
				if (length - i > 23) {
					lastToken = JavaToken.ERROR_LONG_OCTAL_SIZE;
				} else if (length - i == 23) {
					// if the rest of the number is as big as possible
					// the first digit can only be 3 or less
					if (text.charAt(i) != '0' && text.charAt(i) != '1') {
						lastToken = JavaToken.ERROR_LONG_OCTAL_SIZE;
					}
				}
				// Otherwise, it should be OK
				final JavaToken t = (new JavaToken(lastToken, text, yyline, yychar,
						yychar + text.length(), nextState));
				return (t);
			}
			case 478:
				break;
			default:
				if (yy_input == YYEOF && yy_startRead == yy_currentPos) {
					yy_atEOF = true;
					return null;
				} else {
					yy_ScanError(YY_NO_MATCH);
				}
			}
		}
	}

	/**
	 * next Token method that allows you to control if whitespace and comments
	 * are returned as tokens.
	 */
	public Token getNextToken(final boolean returnComments, final boolean returnWhiteSpace)
	throws IOException {
		Token t = getNextToken();
		while (t != null
				&& ((!returnWhiteSpace && t.isWhiteSpace()) || (!returnComments && t
						.isComment()))) {
			t = getNextToken();
		}
		return (t);
	}

	/**
	 * Closes the current input stream, and resets the scanner to read from a
	 * new input stream. All internal variables are reset, the old input stream
	 * cannot be reused (content of the internal buffer is discarded and lost).
	 * The lexical state is set to the initial state. Subsequent tokens read
	 * from the lexer will start with the line, char, and column values given
	 * here.
	 * 
	 * @param reader
	 *            The new input.
	 * @param yyline
	 *            The line number of the first token.
	 * @param yychar
	 *            The position (relative to the start of the stream) of the
	 *            first token.
	 * @param yycolumn
	 *            The position (relative to the line) of the first token.
	 * @throws IOException
	 *             if an IOExecption occurs while switching readers.
	 */
	public void reset(final java.io.Reader reader, final int yyline, final int yychar,
			final int yycolumn) throws IOException {
		yyreset(reader);
		this.yyline = yyline;
		this.yychar = yychar;
	}

	/**
	 * Refills the input buffer.
	 * 
	 * @return <code>false</code>, iff there was new input.
	 * 
	 * @exception IOException
	 *                if any I/O-Error occurs
	 */
	private boolean yy_refill() throws java.io.IOException {

		/* first: make room (if you can) */
		if (yy_startRead > 0) {
			System.arraycopy(yy_buffer, yy_startRead, yy_buffer, 0, yy_endRead
					- yy_startRead);

			/* translate stored positions */
			yy_endRead -= yy_startRead;
			yy_currentPos -= yy_startRead;
			yy_markedPos -= yy_startRead;
			yy_pushbackPos -= yy_startRead;
			yy_startRead = 0;
		}

		/* is the buffer big enough? */
		if (yy_currentPos >= yy_buffer.length) {
			/* if not: blow it up */
			final char newBuffer[] = new char[yy_currentPos * 2];
			System.arraycopy(yy_buffer, 0, newBuffer, 0, yy_buffer.length);
			yy_buffer = newBuffer;
		}

		/* finally: fill the buffer with new input */
		final int numRead = yy_reader.read(yy_buffer, yy_endRead, yy_buffer.length
				- yy_endRead);

		if (numRead < 0) {
			return true;
		} else {
			yy_endRead += numRead;
			return false;
		}
	}

	/**
	 * Reports an error that occured while scanning.
	 * 
	 * In a wellformed scanner (no or only correct usage of yypushback(int) and
	 * a match-all fallback rule) this method will only be called with things
	 * that "Can't Possibly Happen". If this method is called, something is
	 * seriously wrong (e.g. a JFlex bug producing a faulty scanner etc.).
	 * 
	 * Usual syntax/scanner level error handling should be done in error
	 * fallback rules.
	 * 
	 * @param errorCode
	 *            the code of the errormessage to display
	 */
	private void yy_ScanError(final int errorCode) {
		String message;
		try {
			message = YY_ERROR_MSG[errorCode];
		} catch (final ArrayIndexOutOfBoundsException e) {
			message = YY_ERROR_MSG[YY_UNKNOWN_ERROR];
		}

		throw new Error(message);
	}

	/**
	 * Enters a new lexical state
	 * 
	 * @param newState
	 *            the new lexical state
	 */
	final public void yybegin(final int newState) {
		yy_lexical_state = newState;
	}

	/**
	 * Returns the character at position <tt>pos</tt> from the matched text.
	 * 
	 * It is equivalent to yytext().charAt(pos), but faster
	 * 
	 * @param pos
	 *            the position of the character to fetch. A value from 0 to
	 *            yylength()-1.
	 * 
	 * @return the character at position pos
	 */
	final public char yycharat(final int pos) {
		return yy_buffer[yy_startRead + pos];
	}

	/**
	 * Closes the input stream.
	 */
	final public void yyclose() throws java.io.IOException {
		yy_atEOF = true; /* indicate end of file */
		yy_endRead = yy_startRead; /* invalidate buffer */

		if (yy_reader != null)
			yy_reader.close();
	}

	/**
	 * Returns the length of the matched text region.
	 */
	final public int yylength() {
		return yy_markedPos - yy_startRead;
	}

	/**
	 * Closes the current stream, and resets the scanner to read from a new
	 * input stream.
	 * 
	 * All internal variables are reset, the old input stream <b>cannot</b> be
	 * reused (internal buffer is discarded and lost). Lexical state is set to
	 * <tt>YY_INITIAL</tt>.
	 * 
	 * @param reader
	 *            the new input stream
	 */
	final public void yyreset(final java.io.Reader reader) throws java.io.IOException {
		yyclose();
		yy_reader = reader;
		yy_atEOF = false;
		yy_endRead = yy_startRead = 0;
		yy_currentPos = yy_markedPos = yy_pushbackPos = 0;
		yyline = yychar = 0;
		yy_lexical_state = YYINITIAL;
	}

	/**
	 * Returns the current lexical state.
	 */
	final public int yystate() {
		return yy_lexical_state;
	}

	/**
	 * Returns the text matched by the current regular expression.
	 */
	final public String yytext() {
		return new String(yy_buffer, yy_startRead, yy_markedPos - yy_startRead);
	}

}
